﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using nkstdgia.common.ThamDinhGia.BusinessObjects;
using nkstdgia.excel.export;

namespace nkstdgia.main.report
{
    public class GIADOANDUONG_DKS
    {
        public GIADOANDUONG_DKS()
        {
            TEN_DUONG = "";
            _DOAN_DUONG = new List<GIADOANDUONG_GDD>();
        }

        public GIADOANDUONG_DKS(DUONG_KHAO_SAT dks, GIA_DOAN_DUONG gdd)
        {
            this._TEN_DUONG = dks.DUONG;
            _DOAN_DUONG = new List<GIADOANDUONG_GDD>();
            GIADOANDUONG_GDD gia = new GIADOANDUONG_GDD(dks, gdd);
            _DOAN_DUONG.Add(gia);
        }

        private int _iMAX_SOLUONG_GIA;

        public int IMAX_SOLUONG_GIA
        {
            get { return _iMAX_SOLUONG_GIA; }
            set { _iMAX_SOLUONG_GIA = value; }
        }

        private int _MAX_SOLUONG_GIA = 1;

        public int MAX_SOLUONG_GIA
        {
            get { return _MAX_SOLUONG_GIA; }
            set { _MAX_SOLUONG_GIA = value; }
        }
        private String _TEN_DUONG;

        public String TEN_DUONG
        {
            get { return _TEN_DUONG; }
            set { _TEN_DUONG = value; }
        }

        private List<GIADOANDUONG_GDD> _DOAN_DUONG;

        public List<GIADOANDUONG_GDD> DOAN_DUONG
        {
            get { return _DOAN_DUONG; }
            set { _DOAN_DUONG = value; }
        }

        private Boolean _isValid;

        public Boolean isValid
        {
            get { return _isValid; }
            set { _isValid = value; }
        }

        private int KiemTraDoanDuongDaLuu(DUONG_KHAO_SAT dks)
        {
            int rv = -1;
            for (int i = 0; i < _DOAN_DUONG.Count; i++)
            {
                if (_DOAN_DUONG[i].TEN_DOAN_DUONG == dks.DOAN_DUONG)
                {
                    rv = i;
                    break;
                }
            }
            return rv;
        }

        private void ThemGiaChoDoanDuong(int iItem, GIA_DOAN_DUONG gdd)
        {
            _DOAN_DUONG[iItem].GDD_LuuGiaDoanDuong(gdd);
        }

        public void XuLiKhiDuongDaTonTai(DUONG_KHAO_SAT dks, GIA_DOAN_DUONG gdd)
        {
            int iDoanDuongLuu = KiemTraDoanDuongDaLuu(dks);
            if (iDoanDuongLuu == -1)
            {
                GIADOANDUONG_GDD giadd = new GIADOANDUONG_GDD(dks, gdd);
                _DOAN_DUONG.Add(giadd);
            }
            else
            {
                _DOAN_DUONG[iDoanDuongLuu].GDD_LuuGiaDoanDuong(gdd);
            }
        }

        public void XuatGiaDoanDuong_DUONG(SpreedEdit handeler, int iRow, int stt)
        {
            int column = Int32.Parse(GIADOANDUONG_QUAN.giadoanduongReportMapRow["DUONG"].ToString());
            int columnSTT = Int32.Parse(GIADOANDUONG_QUAN.giadoanduongReportMapRow["STT"].ToString());
            handeler.updateCellValue(ExcelCommand.GetExcelColumnName(columnSTT), iRow, stt);
            handeler.updateCellValue(ExcelCommand.GetExcelColumnName(column), iRow, this._TEN_DUONG);
            for (int i = 0; i < this._DOAN_DUONG.Count; i++)
            {
                this._DOAN_DUONG[i].XuatGiaDoanDuong_DOANDUONG(handeler, iRow + i);
            }
        }

        public void TinhMaxSoLuongGia_Duong()
        {
            _iMAX_SOLUONG_GIA = 0;
            for (int i = 0; i < this._DOAN_DUONG.Count; i++)
            {
                if (this._MAX_SOLUONG_GIA < this._DOAN_DUONG[i].SoLuongGiaCuaDoanDuong())
                {
                    this._MAX_SOLUONG_GIA = this._DOAN_DUONG[i].SoLuongGiaCuaDoanDuong();
                    _iMAX_SOLUONG_GIA = i;
                }
            }
        }

        public int soLuongDoanDuong()
        {
            return _DOAN_DUONG.Count;
        }

        public List<GIA_DOAN_DUONG> getAllMaxGiaDoanDuong()
        {
            return _DOAN_DUONG[this._iMAX_SOLUONG_GIA].getAllGiaDoanDuong_DD();
        }
    }
}
